#include"binarytree.h"
#include"Queue.h"


void levelorder(BTNode* root)
{
	Queue q;
	QueueInit(&q);

	if (root)
	{
		QueuePush(&q, root);
	}

	while (!QueueEmpty(&q))
	{
		BTNode* front = QueueFront(&q);
		printf("%c", front->data);
		QueuePop(&q);

		if(front->left)
		{
			QueuePush(&q, front->left);
		}
		if (front->right)
		{
			QueuePush(&q, front->right);
		}
		printf("\n");
	}
}

BTNode* BuyBTNode(char x)
{
	BTNode* newnode = (BTNode*)malloc(sizeof(BTNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		exit(-1);
	}

	newnode->left = NULL;
	newnode->right = NULL;
	newnode->data = x;

	return newnode;
}
//int main()
//{
//	char arr[] = { "ABD##E#H##CF##G##" };
//	int i = 0;
//
//	BTNode* root = BinaryTreeCreate(arr, &i);
//	BinaryTreePrevOrder(root);
//	int ret = BinaryTreeSize(root);
//	printf("%d\n ", ret);
//
//
//	/*BTNode* n1 = BuyBTNode(1);
//	BTNode* n2 = BuyBTNode(2);
//	BTNode* n3 = BuyBTNode(3);
//	BTNode* n4 = BuyBTNode(4);
//	BTNode* n5 = BuyBTNode(5);
//	BTNode* n6 = BuyBTNode(6);
//	BTNode* n7 = BuyBTNode(7);*/
//
//	BTNode* n1 = BuyBTNode('A');
//	BTNode* n2 = BuyBTNode('B');
//	BTNode* n3 = BuyBTNode('D');
//	BTNode* n4 = BuyBTNode('E');
//	BTNode* n5 = BuyBTNode('H');
//	BTNode* n6 = BuyBTNode('C');
//	BTNode* n7 = BuyBTNode('F');
//
//	//n3->right = n7;
//
//	//n1->left = n2;
//	//n1->right = n4;
//	//n2->left = n3;
//	//n4->left = n5;
//	//n4->right = n6;
//
//	printf("%d\n", BinaryTreeComplete(n1));
//	levelorder(n1);
//	return 0;
//}

//int main()
//{
//	BTNode* n1 = BuyBTNode('A');
//	BTNode* n2 = BuyBTNode('B');
//	BTNode* n3 = BuyBTNode('D');
//	BTNode* n4 = BuyBTNode('E');
//	BTNode* n5 = BuyBTNode('H');
//	BTNode* n6 = BuyBTNode('C');
//	BTNode* n7 = BuyBTNode('F');
//	printf("%d\n", BinaryTreeComplete(n1));
//	levelorder(n1);
//	return 0;
//}